//////////////////////////////////////////////////////
// Variable declaration
//////////////////////////////////////////////////////

//////////////////////////////////////////////////////
userData = null; //User object retrieved from server

//////////////////////////////////////////////////////
// Getting the right host adress depending 
// on were the page was loaded
//////////////////////////////////////////////////////

//////////////////////////////////////////////////////
function getHost()
{
	result = "";
	host = location.host; 
	if(host.search("localhost")!=-1) result = "localhost:8080";
	else if(host=="") result = "localhost:8080";
	else result = "130.75.125.227:8080";
	
	return result;
}

//////////////////////////////////////////////////////
function getServer()
{
	result = "http://"+getHost()+"/moocgen";
	return result;
}

function getServerUser() { return getServer()+"/users"; }

//////////////////////////////////////////////////////
function getCallType()
{
	if(location.host==getHost())
		return "json";
	else 
		return "jsonp";
}

//////////////////////////////////////////////////////
// handling users
//////////////////////////////////////////////////////

//////////////////////////////////////////////////////
function onEnterMat(event) 
{
    var keypressed = event.keyCode || event.which;
    if (keypressed != 13) { return true;} 
    
    getUser($('#matInput').val());
    return false;
};

//////////////////////////////////////////////////////
function getUser(matNum)
{
	readUser(matNum, function(response, result)
	{
		if(response.status!=200) 
		{
			createUser(matNum, login);
		}
		else
		{
			login(response, result);
		}
	});
}

//////////////////////////////////////////////////////
function login(response, result)
{
	$.cookie('moocgen_user_data', response.responseText);
	showUserData();
	window.location = getServer()+"/exam.html";
}

//////////////////////////////////////////////////////
function showUserData()
{
	userData = $.parseJSON($.cookie('moocgen_user_data'));
	userDoc = $('#user');
	userDoc[0].innerHTML = "You are logged in! Matriculation number is: "+userData.matNum;
}

//////////////////////////////////////////////////////
//CRUD methods for user (If you do not know what CRUD 
//means please look it up!)
//////////////////////////////////////////////////////

//////////////////////////////////////////////////////
function createUser(matNum, callback)
{
	$.ajax({
	        type: 'POST',
	        data: '{"matNum":"'+matNum+'"}',
	        url: getServerUser(),
	        contentType: 'application/json; charset=utf-8',
	        dataType: getCallType(),
	        complete: callback
	});
}

//////////////////////////////////////////////////////
function readUser(matNum, callback)
{
	$.ajax({
	        type: 'GET',
	        url: getServerUser()+"/"+matNum,
	        contentType: 'application/json; charset=utf-8',
	        dataType: getCallType(),
	        complete: callback
	});
}

//////////////////////////////////////////////////////
function listUser(callback)
{
	$.ajax({
        type: 'GET',
        url: getServerUser(),
        contentType: 'application/json; charset=utf-8',
        dataType: getCallType(),
        complete: callback
	});
}

//////////////////////////////////////////////////////
function deleteUser(matNum, callback)
{
	$.ajax({
	        type: 'DELETE',
	        url: getServerUser()+"/"+matNum,
	        contentType: 'application/json; charset=utf-8',
	        dataType: getCallType(),
	        complete: callback
	});
}

//////////////////////////////////////////////////////
// standard fail message
//////////////////////////////////////////////////////

//////////////////////////////////////////////////////
function fail(error)
{
	alert("server error: "+error);
}